package net.zjitc.hashmap;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Author admin
 * @Date 2019/4/3 10:30
 */
public class Test {
    public static void main(String[] args) {
        HashMap<Integer,Student> hashMap =new HashMap<Integer, Student>();
        /** key 是唯一的，所以可以把studentd的id作为key*/
        Student s1=new Student(1,"张三");
        Student s2=new Student(2,"李四");
        Student s3=new Student(3,"张三");
        Student s4=new Student(4,"王五");
        hashMap.put(s1.getId(),s1);
        hashMap.put(s2.getId(),s2);
        hashMap.put(s3.getId(),s3);
        hashMap.put(s4.getId(),s4);
        /* 当key重复了，其实覆盖了原有的 hashMap.put(1,s2) */
        System.out.println(hashMap.get(s2.getId()));

        /**
         *  遍历输出所有的元素
         *  第1种遍历方法，键找值
         *  1.先得到所有键的集合
         *  2. 得到迭代器对象（通过集合的）
         * */
        Set<Integer> set=hashMap.keySet();
        Iterator iterator=set.iterator();
        while (iterator.hasNext()){
            /* 取出迭代器中的一个元素
             * 迭代器中的元素都是key */
            Integer key=(Integer) iterator.next();
            /* 根据key得到value */
            System.out.println(hashMap.get(key));
        }
        System.out.println("第2种遍历方法：");
        /*
        *   1.先得到迭代器对象
        *    1) hashmap 的entrySet()方法得到集合
        *
        * */
        Set<Map.Entry<Integer,Student>> set1=hashMap.entrySet();
        Iterator iterator1=set1.iterator();
        while (iterator.hasNext()){
           Map.Entry<Integer,Student> entry=(Map.Entry<Integer, Student>)iterator1.next();
            Integer key =entry.getKey();
            Student value=hashMap.get(key);
            System.out.println(value);
        }
    }
}
